package cn.abcsys.cloud.devops.web.service;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import cn.abcsys.cloud.devops.web.entity.Env;
import cn.abcsys.cloud.devops.web.entity.GridBean;
import cn.abcsys.cloud.devops.web.entity.GridBeanAndData;
import cn.abcsys.cloud.devops.web.entity.PagerModel;
import cn.abcsys.cloud.devops.web.entity.User;

/**
 * 用户信息接口
 * @author mayunhao
 *
 */
public interface UserService {
	/**
	 * 查询用户详细信息
	 * @param userId
	 * @return
	 */
	public Map<String,Object> getUserDetail(Map<String,Integer> map);
	/**
	 * 查询用户信息
	 * @param userId
	 * @return
	 */
	public GridBean  getUsers(Map<String, Object> map,PagerModel pageModel);
	/**
	 * 新增用户
	 * @param user
	 * @return
	 */
	public int insert(User user);
	/**
	 * 删除用户
	 * @param user
	 * @return
	 */
	public void delete(Integer userId) throws SQLException;
	/**
	 * 修改用户信息
	 * @param user
	 * @return
	 */
	public int updateUserByUserId(User user);
	/**
	 * 通过ldap uid获取用户信息
	 * @param uid
	 * @return
	 */
	public User getUserByUid(String string);
	/**
	 * 通过ldap uid更新用户信息
	 * @param user
	 * @return
	 * @throws SqlException
	 */
	public int updateByUid(User ldapUser);
	/**
	 * 查询用户详情
	 * @param userId
	 * @return
	 */
	public User getUserByUserId(Integer userId);
	
	/**
	 * 查询登录用户所具有的环境
	 * @param user
	 * @return
	 */
	public List<Env> getEnv(User user);
	
	/**
	 * 查询环境管理员
	 * @return
	 */
	public List<User> getEnvUser();
	
	/**
	 * 查看相应环境下的普通用户
	 * @return
	 */
	public List<User> getOrdinaryleUser(Integer envId);
	
	/**
	 * 查看某一环境下的项目管理员
	 * @param envId
	 * @return
	 */
	public List<User> getProjectUser(Integer envId);
	
	/**
	 * 检查用户密码
	 * @param user
	 * @return
	 */
	public boolean checkUser(User user);
	
	/**
	 * 冻结用户
	 * @param userId
	 * @return
	 */
	public int lockUser(Integer userId);
	
	/**
	 * 返回所有可有的用户
	 * @return
	 */
	public List<User> selectEffectUsers();
	
	/**
	 * 获取用户列表和项目环境对应的用户
	 * @param map
	 * @param pageModel
	 * @return
	 */
	public GridBeanAndData getSelectUsers(Map<String, Object> map,PagerModel pageModel);
}
